8 sys.path.append(os.getenv(
'MVCAM_COMMON_RUNENV') +
"/Samples/Python/MvImport")
9 from MvCameraControl_class
import *
11 if __name__ ==
"__main__":
14 MvCamera.MV_CC_Initialize()
16 deviceList = MV_CC_DEVICE_INFO_LIST()
17 t_layer_type = (MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_CAMERALINK_DEVICE
18 | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE)
21 ret = MvCamera.MV_CC_EnumDevices(t_layer_type, deviceList)
23 print(
"error: enum devices fail! ret[0x%x]" % ret)
26 if deviceList.nDeviceNum == 0:
27 print(
"find no device!")
30 print(
"find %d devices!" % deviceList.nDeviceNum)
32 for i
in range(0, deviceList.nDeviceNum):
33 mvcc_dev_info = cast(deviceList.pDeviceInfo[i], POINTER(MV_CC_DEVICE_INFO)).contents
34 if mvcc_dev_info.nTLayerType == MV_GIGE_DEVICE
or mvcc_dev_info.nTLayerType == MV_GENTL_GIGE_DEVICE:
35 print(
"gige device: [%d]" % i)
37 for per
in mvcc_dev_info.SpecialInfo.stGigEInfo.chModelName:
40 strModeName = strModeName + chr(per)
41 print(
"device model name: %s" % strModeName)
43 nip1 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24)
44 nip2 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16)
45 nip3 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8)
46 nip4 = (mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff)
47 print(
"current ip: %d.%d.%d.%d" % (nip1, nip2, nip3, nip4))
49 chUserDefinedName =
"" 50 for per
in mvcc_dev_info.SpecialInfo.stGigEInfo.chUserDefinedName:
53 chUserDefinedName = chUserDefinedName + chr(per)
54 print(
"device user define name: %s" % chUserDefinedName)
55 elif mvcc_dev_info.nTLayerType == MV_USB_DEVICE:
56 print(
"u3v device: [%d]" % i)
58 for per
in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chModelName:
61 strModeName = strModeName + chr(per)
62 print(
"device model name: %s" % strModeName)
65 for per
in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chSerialNumber:
68 strSerialNumber = strSerialNumber + chr(per)
69 print(
"user serial number: %s" % strSerialNumber)
71 strUserDefinedName =
"" 72 for per
in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chUserDefinedName:
75 strUserDefinedName = strUserDefinedName + chr(per)
76 print(
"device user define name: %s" % strUserDefinedName)
77 elif mvcc_dev_info.nTLayerType == MV_GENTL_XOF_DEVICE:
78 print(
"XoF device: [%d]" % i)
80 for per
in mvcc_dev_info.SpecialInfo.stXoFInfo.chModelName:
83 strModeName = strModeName + chr(per)
84 print(
"device model name: %s" % strModeName)
87 for per
in mvcc_dev_info.SpecialInfo.stXoFInfo.chSerialNumber:
90 strSerialNumber = strSerialNumber + chr(per)
91 print(
"user serial number: %s" % strSerialNumber)
93 strUserDefinedName =
"" 94 for per
in mvcc_dev_info.SpecialInfo.stXoFInfo.chUserDefinedName:
97 strUserDefinedName = strUserDefinedName + chr(per)
98 print(
"device user define name: %s" % strUserDefinedName)
99 elif mvcc_dev_info.nTLayerType == MV_GENTL_CXP_DEVICE:
100 print(
"CXP device: [%d]" % i)
102 for per
in mvcc_dev_info.SpecialInfo.stCXPInfo.chModelName:
105 strModeName = strModeName + chr(per)
106 print(
"device model name: %s" % strModeName)
109 for per
in mvcc_dev_info.SpecialInfo.stCXPInfo.chSerialNumber:
112 strSerialNumber = strSerialNumber + chr(per)
113 print(
"user serial number: %s" % strSerialNumber)
115 strUserDefinedName =
"" 116 for per
in mvcc_dev_info.SpecialInfo.stCXPInfo.chUserDefinedName:
119 strUserDefinedName = strUserDefinedName + chr(per)
120 print(
"device user define name: %s" % strUserDefinedName)
121 elif mvcc_dev_info.nTLayerType == MV_GENTL_CAMERALINK_DEVICE:
122 print(
"CML device: [%d]" % i)
124 for per
in mvcc_dev_info.SpecialInfo.stCMLInfo.chModelName:
127 strModeName = strModeName + chr(per)
128 print(
"device model name: %s" % strModeName)
131 for per
in mvcc_dev_info.SpecialInfo.stCMLInfo.chSerialNumber:
134 strSerialNumber = strSerialNumber + chr(per)
135 print(
"user serial number: %s" % strSerialNumber)
137 strUserDefinedName =
"" 138 for per
in mvcc_dev_info.SpecialInfo.stCMLInfo.chUserDefinedName:
141 strUserDefinedName = strUserDefinedName + chr(per)
142 print(
"device user define name: %s" % strUserDefinedName)
144 nConnectionNum = input(
"please input the number of the device to connect:")
146 if int(nConnectionNum) >= deviceList.nDeviceNum:
147 print(
"error: input error!")
154 stDeviceList = cast(deviceList.pDeviceInfo[int(nConnectionNum)], POINTER(MV_CC_DEVICE_INFO)).contents
156 ret = cam.MV_CC_CreateHandle(stDeviceList)
158 print(
"error: create handle fail! ret[0x%x]" % ret)
162 ret = cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
164 print(
"error: open device fail! ret[0x%x]" % ret)
168 if stDeviceList.nTLayerType == MV_GIGE_DEVICE
or stDeviceList.nTLayerType == MV_GENTL_GIGE_DEVICE:
169 nPacketSize = cam.MV_CC_GetOptimalPacketSize()
170 if int(nPacketSize) > 0:
171 ret = cam.MV_CC_SetIntValue(
"GevSCPSPacketSize", nPacketSize)
173 print(
"warning: Set Packet Size fail! ret[0x%x]" % ret)
175 print(
"warning: Get Packet Size fail! ret[0x%x]" % nPacketSize)
178 ret = cam.MV_CC_SetEnumValue(
"TriggerMode", MV_TRIGGER_MODE_OFF)
180 print(
"error: set trigger mode fail! ret[0x%x]" % ret)
184 ret = cam.MV_CC_SetBoolValue(
"DigitalShiftEnable",
True)
186 print(
"error: set digital shift enable fail! ret[0x%x]" % ret)
188 ret = cam.MV_CC_SetFloatValue(
"DigitalShift", 0)
190 print(
"error: set digital shift fail! ret[0x%x]" % ret)
193 ret = cam.MV_CC_SetIntValue(
"AcquisitionLineRate", 10000)
195 print(
"error: set acquisition line rate fail! ret[0x%x]" % ret)
197 ret = cam.MV_CC_SetBoolValue(
"AcquisitionLineRateEnable",
True)
199 print(
"error: set acquisition line rate enable fail! ret[0x%x]" % ret)
202 ret = cam.MV_CC_SetEnumValueByString(
"ImageCompressionMode",
"HB")
204 print(
"error: set image compression mode: HB fail! ret[0x%x]" % ret)
208 stParam = MVCC_INTVALUE()
209 memset(byref(stParam), 0, sizeof(MVCC_INTVALUE))
211 ret = cam.MV_CC_GetIntValue(
"PayloadSize", stParam)
213 print(
"get payload size fail! ret[0x%x]" % ret)
215 nPayloadSize = stParam.nCurValue
218 ret = cam.MV_CC_StartGrabbing()
220 print(
"error: start grabbing fail! ret[0x%x]" % ret)
223 stOutFrame = MV_FRAME_OUT()
224 memset(byref(stOutFrame), 0, sizeof(stOutFrame))
226 ret = cam.MV_CC_GetImageBuffer(stOutFrame, 1000)
227 if None != stOutFrame.pBufAddr
and 0 == ret:
228 print(
"get one frame: Width[%d], Height[%d], nFrameNum[%d]" % (
229 stOutFrame.stFrameInfo.nWidth, stOutFrame.stFrameInfo.nHeight, stOutFrame.stFrameInfo.nFrameNum))
232 dst_size = nPayloadSize
233 HB_decode_param = MV_CC_HB_DECODE_PARAM()
234 HB_decode_param.pSrcBuf = stOutFrame.pBufAddr
235 HB_decode_param.nSrcLen = stOutFrame.stFrameInfo.nFrameLen
236 HB_decode_param.nDstBufSize = dst_size
237 HB_decode_param.pDstBuf = (c_ubyte * dst_size)()
238 ret = cam.MV_CC_HBDecode(HB_decode_param)
240 print(
"error: high bandwidth decode fail! ret[0x%x]" % ret)
243 print(
"high bandwidth decode ok, dst pixel type is [%d]" % HB_decode_param.enDstPixelType)
247 c_file_path =
"image.bmp".encode(
'ascii')
248 nRGBSize = stOutFrame.stFrameInfo.nWidth * stOutFrame.stFrameInfo.nHeight * 4 + 2048
249 stSaveParam = MV_SAVE_IMAGE_TO_FILE_PARAM_EX()
250 memset(byref(stSaveParam), 0, sizeof(stSaveParam))
251 stSaveParam.nWidth = stOutFrame.stFrameInfo.nWidth
252 stSaveParam.nHeight = stOutFrame.stFrameInfo.nHeight
253 stSaveParam.pData = HB_decode_param.pDstBuf
254 stSaveParam.enImageType = MV_Image_Bmp
255 stSaveParam.nDataLen = HB_decode_param.nDstBufLen
256 stSaveParam.enPixelType = HB_decode_param.enDstPixelType
257 stSaveParam.nQuality = 80
258 stSaveParam.iMethodValue = 3
259 stSaveParam.pcImagePath = ctypes.create_string_buffer(c_file_path)
260 ret = cam.MV_CC_SaveImageToFileEx(stSaveParam)
262 print(
"error: save image to file fail! ret[0x%x]" % ret)
265 print(
"save image to file is OK")
267 cam.MV_CC_FreeImageBuffer(stOutFrame)
270 print(
"error: get one frame fail, ret[0x%x]" % ret)
272 print(
"press a key to continue.")
276 ret = cam.MV_CC_StopGrabbing()
278 print(
"error: stop grabbing fail! ret[0x%x]" % ret)
282 ret = cam.MV_CC_CloseDevice()
284 print(
"error: close device fail! ret[0x%x]" % ret)
288 ret = cam.MV_CC_DestroyHandle()
290 print(
"error: destroy handle fail! ret[0x%x]" % ret)
294 MvCamera.MV_CC_Finalize()